ALMaSS  1.0
The Animal, Landscape and Man Simulation System
GeneticMaterial.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************************************
3 Copyright (c) 2011, Christopher John Topping, University of Aarhus
4 All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without modification, are permitted provided
7 that the following conditions are met:
8 
9 Redistributions of source code must retain the above copyright notice, this list of conditions and the
10 following disclaimer.
11 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
12 the following disclaimer in the documentation and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
15 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
17 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
18 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
19 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 ********************************************************************************************************
23 */
24 
39 //---------------------------------------------------------------------------
40 #ifndef GeneticMaterialH
41 #define GeneticMaterialH
42 
43 
44 #ifdef __LINUX
45 #include "ALMaSSDefines.h"
46 
47 #else
48 #include "../ALMaSSDefines.h"
49 #endif
50 //---------------------------------------------------------------------------
51 //------------------------------------------------------------------------------
52 
53 class Landscape;
54 
55 //------------------------------------------------------------------------------
56 
62 {
63  protected:
64  int AlleleNumber[32][16];
65  float AlleleFrequency[32][16];
66  float HE[32];
67  float HO[32];
68  int NoAlleles[32];
69  public:
70  AlleleFreq();
71  int SupplyAN(int loc, int al) { return AlleleNumber[loc][al];}
72 /*
73  void SetAF(int loc, int al, int val) { AlleleFrequency[loc][al]=val;}
74  void IncAN(int loc, int al) { AlleleNumber[loc][al]++;}
75  void IncAF(int loc, int al) { AlleleFrequency[loc][al]++;}
76  void IncHO(int loc) { HO[loc]++;}
77  float SupplyAF(int loc, int al) { return AlleleFrequency[loc][al];}
78  float SupplyHE(int loc) { return HE[loc];}
79  float SupplyHO(int loc) { return HO[loc];}
80  int SupplyNoAlleles(int loc) { return NoAlleles[loc];}
81  void CalcNoAlleles();
82  void CalcAF();
83  void CalcHE();
84  void CalcHO(int si);
85  void Flush();
86 */
87 };
88 //------------------------------------------------------------------------------
89 
95 {
96  protected:
98  public:
101  void SetAllele(int pos, uint32 value, int Chromosome);
102  uint32 GetAllele(int pos, int Chromosome);
103  void PrintChromosome(char *C, int Chromosome);
104  int HomozygosityCount();
105  int HeterozygosityCount();
106  void Recombine(GeneticMaterial* Gen21, GeneticMaterial* Gene2);
107  void Initiation(AlleleFreq* Al);
108  float ScoreReproduction();
109  float ScoreHQThreshold();
110  void SetGeneticFlag();
111  void SetDirectFlag();
112  void UnsetGeneticFlag();
113  void UnsetDirectFlag();
116  void Mutation_1(); // random mutation
117  void Mutation_1ab(); // random mutation only a&b
118  void Mutation_2(); // mutation one step either way
119  void Mutation_3(); // mutation from one state to another only (a->b) (b->c)}
120  void Mutation_4(); // mutation from one state to another only (a->b) (b->a) for first locus
121 };
122 
123 //---------------------------------------------------------------------------
124 
126 {
127  protected:
128  int AlleleNumber[16][16];
129  float AlleleFrequency[16][16];
130  float HE[16];
131  float HO[16];
132  int NoAlleles[16];
133  public:
134  AlleleFreq1616();
135  int SupplyAN(int loc, int al) { return AlleleNumber[loc][al];}
136 /*
137  void SetAF(int loc, int al, int val) { AlleleFrequency[loc][al]=val;}
138  void IncAN(int loc, int al) { AlleleNumber[loc][al]++;}
139  void IncAF(int loc, int al) { AlleleFrequency[loc][al]++;}
140  void IncHO(int loc) { HO[loc]++;}
141  float SupplyAF(int loc, int al) { return AlleleFrequency[loc][al];}
142  float SupplyHE(int loc) { return HE[loc];}
143  float SupplyHO(int loc) { return HO[loc];}
144  int SupplyNoAlleles(int loc) { return NoAlleles[loc];}
145  void CalcNoAlleles();
146  void CalcAF();
147  void CalcHE();
148  void CalcHO(int si);
149  void Flush();
150 */
151 };
152 //------------------------------------------------------------------------------
154 {
155  protected:
156  uint32 Chromosome[4]; // = 32 loci (in 2 chromosomes) & 4 bits each
157  public:
159  void SetAllele(unsigned int locus, uint32 value, unsigned int Chromo);
160  uint32 GetAllele( unsigned int locus, unsigned int Chromo );
161  void PrintChromosome(char *C, unsigned int Chromosome);
162  void SetGeneticFlag();
163  void SetDirectFlag();
164  void UnsetGeneticFlag();
165  void UnsetDirectFlag();
168  int HomozygosityCount();
169  int HeterozygosityCount();
171  void Initiation(AlleleFreq1616* Al);
172  void Mutation_1(); // random mutation
173  void Mutation_2(); // 'next in line' mutation + (16 becomes 0)
174  void Mutation_3(); // 'next in line' mutation +/- (16 becomes 0 and -1 becomes 15)
175 };
176 //---------------------------------------------------------------------------
177 
178 
180 {
181  protected:
182  int AlleleNumber[256][16];
183  float AlleleFrequency[16][256];
184  float HE[16];
185  float HO[16];
186  int NoAlleles[256];
187  public:
189  int SupplyAN(int loc, int al) { return AlleleNumber[al][loc];}
190 };
191 //------------------------------------------------------------------------------
193 {
194  protected:
195  unsigned char Chromosome[32]; // = 32 loci (in 2 chromosomes) & 8 bits each
196  public:
198  void SetAllele(unsigned int locus, uint32 value, unsigned int Chromo);
199  uint32 GetAllele( unsigned int locus, unsigned int Chromo );
200  void Mutation_3(); // 'next in line' mutation +/-
201  void SetGeneticFlag();
202  void SetDirectFlag();
203  int HomozygosityCount() { return 0; } // To add if needed
204  int HeterozygosityCount() { return 0; } // To add if needed
205  void UnsetGeneticFlag();
206  void UnsetDirectFlag();
209  void PrintGenes();
211  void Initiation(AlleleFreq256_16* Al);
212 /*
213  void Mutation_1(); // random mutation
214  void Mutation_2(); // 'next in line' mutation + (16 becomes 0)
215 */
216 };
217 //---------------------------------------------------------------------------
218 
219 #endif
unsigned int uint32
Definition: ALMaSS_Setup.h:34
Definition: GeneticMaterial.h:126
int AlleleNumber[16][16]
Definition: GeneticMaterial.h:128
float AlleleFrequency[16][16]
Definition: GeneticMaterial.h:129
int SupplyAN(int loc, int al)
Definition: GeneticMaterial.h:135
float HO[16]
Definition: GeneticMaterial.h:131
int NoAlleles[16]
Definition: GeneticMaterial.h:132
AlleleFreq1616()
Definition: GeneticMaterial.cpp:558
float HE[16]
Definition: GeneticMaterial.h:130
Definition: GeneticMaterial.h:180
float HO[16]
Definition: GeneticMaterial.h:185
int SupplyAN(int loc, int al)
Definition: GeneticMaterial.h:189
float HE[16]
Definition: GeneticMaterial.h:184
float AlleleFrequency[16][256]
Definition: GeneticMaterial.h:183
int AlleleNumber[256][16]
Definition: GeneticMaterial.h:182
int NoAlleles[256]
Definition: GeneticMaterial.h:186
AlleleFreq256_16()
Definition: GeneticMaterial.cpp:575
Class to handle statistics and constructs based on allele frequencies.
Definition: GeneticMaterial.h:62
int NoAlleles[32]
Definition: GeneticMaterial.h:68
AlleleFreq()
Definition: GeneticMaterial.cpp:55
float AlleleFrequency[32][16]
Definition: GeneticMaterial.h:65
float HO[32]
Definition: GeneticMaterial.h:67
int AlleleNumber[32][16]
Definition: GeneticMaterial.h:64
int SupplyAN(int loc, int al)
Definition: GeneticMaterial.h:71
float HE[32]
Definition: GeneticMaterial.h:66
Definition: GeneticMaterial.h:154
void SetGeneticFlag()
Definition: GeneticMaterial.cpp:744
void SetDirectFlag()
Definition: GeneticMaterial.cpp:748
int HeterozygosityCount()
Definition: GeneticMaterial.cpp:718
void UnsetDirectFlag()
Definition: GeneticMaterial.cpp:757
void SetAllele(unsigned int locus, uint32 value, unsigned int Chromo)
Definition: GeneticMaterial.cpp:621
void Mutation_3()
Definition: GeneticMaterial.cpp:847
void Initiation(AlleleFreq1616 *Al)
Definition: GeneticMaterial.cpp:775
void PrintChromosome(char *C, unsigned int Chromosome)
Definition: GeneticMaterial.cpp:649
uint32 GetAllele(unsigned int locus, unsigned int Chromo)
Definition: GeneticMaterial.cpp:599
uint32 GetDirectFlag()
Definition: GeneticMaterial.cpp:766
void Mutation_1()
Definition: GeneticMaterial.cpp:807
void UnsetGeneticFlag()
Definition: GeneticMaterial.cpp:753
void Recombine(GeneticMaterial1616 *Gene1, GeneticMaterial1616 *Gene2)
Definition: GeneticMaterial.cpp:727
void Mutation_2()
Definition: GeneticMaterial.cpp:826
uint32 GetGeneticFlag()
Definition: GeneticMaterial.cpp:762
int HomozygosityCount()
Definition: GeneticMaterial.cpp:707
uint32 Chromosome[4]
Definition: GeneticMaterial.h:156
GeneticMaterial1616()
Definition: GeneticMaterial.cpp:592
Definition: GeneticMaterial.h:193
GeneticMaterial256_16()
Definition: GeneticMaterial.cpp:876
void UnsetGeneticFlag()
Definition: GeneticMaterial.cpp:926
int HomozygosityCount()
Definition: GeneticMaterial.h:203
void Recombine(GeneticMaterial256_16 *Gene1, GeneticMaterial256_16 *Gene2)
Definition: GeneticMaterial.cpp:944
void SetDirectFlag()
Definition: GeneticMaterial.cpp:921
void Initiation(AlleleFreq256_16 *Al)
Definition: GeneticMaterial.cpp:965
unsigned char Chromosome[32]
Definition: GeneticMaterial.h:195
void SetGeneticFlag()
Definition: GeneticMaterial.cpp:917
void UnsetDirectFlag()
Definition: GeneticMaterial.cpp:930
uint32 GetAllele(unsigned int locus, unsigned int Chromo)
Definition: GeneticMaterial.cpp:889
void SetAllele(unsigned int locus, uint32 value, unsigned int Chromo)
Definition: GeneticMaterial.cpp:883
void Mutation_3()
Definition: GeneticMaterial.cpp:898
int HeterozygosityCount()
Definition: GeneticMaterial.h:204
uint32 GetDirectFlag()
Definition: GeneticMaterial.cpp:939
uint32 GetGeneticFlag()
Definition: GeneticMaterial.cpp:935
Class for the genetic material optionally carried by animals in ALMaSS.
Definition: GeneticMaterial.h:95
uint32 Chromosome[6]
Definition: GeneticMaterial.h:97
void Recombine(GeneticMaterial *Gen21, GeneticMaterial *Gene2)
Definition: GeneticMaterial.cpp:338
int HeterozygosityCount()
Definition: GeneticMaterial.cpp:328
GeneticMaterial()
Definition: GeneticMaterial.cpp:355
void Mutation_1ab()
Definition: GeneticMaterial.cpp:465
float ScoreHQThreshold()
Definition: GeneticMaterial.cpp:414
void SetAllele(int pos, uint32 value, int Chromosome)
Definition: GeneticMaterial.cpp:196
void Mutation_1()
Definition: GeneticMaterial.cpp:444
uint32 GetAllele(int pos, int Chromosome)
Definition: GeneticMaterial.cpp:233
void SetDirectFlag()
Definition: GeneticMaterial.cpp:173
void Mutation_3()
Definition: GeneticMaterial.cpp:510
void UnsetGeneticFlag()
Definition: GeneticMaterial.cpp:178
void Mutation_4()
Definition: GeneticMaterial.cpp:538
void PrintChromosome(char *C, int Chromosome)
Definition: GeneticMaterial.cpp:258
float ScoreReproduction()
Definition: GeneticMaterial.cpp:394
void ReadFrequencies()
int HomozygosityCount()
Definition: GeneticMaterial.cpp:317
void UnsetDirectFlag()
Definition: GeneticMaterial.cpp:182
uint32 GetDirectFlag()
Definition: GeneticMaterial.cpp:191
void Initiation(AlleleFreq *Al)
Definition: GeneticMaterial.cpp:366
void Mutation_2()
Definition: GeneticMaterial.cpp:481
uint32 GetGeneticFlag()
Definition: GeneticMaterial.cpp:187
void SetGeneticFlag()
Definition: GeneticMaterial.cpp:169
The landscape class containing all environmental and topographical data.
Definition: landscape.h:113